#include<iostream>
#include <vector>
#include <map>
#include <numeric>
#include<algorithm>
#include<set>
using namespace std;
typedef long long int ll;
#define fast \
ios_base::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0)
int main()
{
fast;
ll n, k;
cin>>n>>k;
string s;
cin>>s;
bool ans=false;
int ind=-1;
for(int i=n-1;i>=0;i--)
{
int p=s[i]-'a'+1;
for(int j=p;j<k;j++)
{
if ((i >= 1 && j == s[i - 1] - 'a') || (i >= 2 && j == s[i - 2] - 'a'))
continue;
s[i] = char(j + 'a');
ind = i + 1;
ans = 1;
break;
}
if(ans)
break;
}
if(!ans)
{
cout<<"NO"<<endl;
return 0;
}
for (int i = ind; i < n; i++)
{
for (int j = 0; j < k; j++)
{
if ((i >= 1 && j == s[i - 1] - 'a') || (i >= 2 && j == s[i - 2] - 'a'))
continue;
s[i] = char(j + 'a');
break;
}
}
for(int i=0;i<n;i++)
{
cout<<s[i];
}
cout<<endl;
}
2144. Minimum Cost of Buying Candies With Discount | Non empty subsets |
1630A - And Matching | 1630B - Range and Partition |
1630C - Paint the Middle | 1630D - Flipping Range |
1328A - Divisibility Problem | 339A - Helpful Maths |
4A - Watermelon | 476A - Dreamoon and Stairs |
1409A - Yet Another Two Integers Problem | 977A - Wrong Subtraction |
263A - Beautiful Matrix | 180C - Letter |
151A - Soft Drinking | 1352A - Sum of Round Numbers |
281A - Word Capitalization | 1646A - Square Counting |
266A - Stones on the Table | 61A - Ultra-Fast Mathematician |
148A - Insomnia cure | 1650A - Deletions of Two Adjacent Letters |
1512A - Spy Detected | 282A - Bit++ |
69A - Young Physicist | 1651A - Playoff |
734A - Anton and Danik | 1300B - Assigning to Classes |
1647A - Madoka and Math Dad | 710A - King Moves |